package com.tosit.bmx.mapper;

import com.tosit.bmx.domian.User;
import com.tosit.bmx.domian.UserExample;
import java.util.List;

import com.tosit.bmx.domian.UserLevel;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

@Repository
public interface UserMapper {
    long countByExample(UserExample example);

    int deleteByExample(UserExample example);

    int deleteByPrimaryKey(Integer id);

    int insert(User record);

    int insertSelective(User record);

    List<User> selectByExample(UserExample example);

    User selectByPrimaryKey(Integer id);

    int updateByExampleSelective(@Param("record") User record, @Param("example") UserExample example);

    int updateByExample(@Param("record") User record, @Param("example") UserExample example);

    int updateByPrimaryKeySelective(User record);

    int updateByPrimaryKey(User record);

//--------------------------------------------------------

    /**
     * 通过登录账号获取用户
     *    * @author tsl
     * @date 2018/4/23 15:20
     * @param name
     * @return
     */
    User selectByName(String name);

    /**
     * 获取某个地区所有汉人
     * @author tsl
     * @date 2018/4/23 15:13
     * @param id 区域id
     * @return
     */
    List<User> selectByHArea(@Param("id")Integer id);
    /**
     * 获取某个地区所有藏人
     * @author tsl
     * @date 2018/4/23 15:13
     * @param id 区域id
     * @return
     */
    List<User> selectByZArea(@Param("id")Integer id);

    /**
     * 获取未分组的所有汉人
     * @author tsl
     * @date 2018/4/23 15:13
     * @return
     */
    List<User> selectNAreaHUser();
    /**
     * 获取未分组的所有藏人
     * @author tsl
     * @date 2018/4/23 15:13
     * @return
     */
    List<User> selectNAreaZUser();


    /**
     *      批量删除
     * @author tsl
     * @date 2018/4/23 15:54
     * @param
     * @return
     */
    Integer deleteByIds(@Param("ids") List<Integer> ids);

    /**
     * 根据区域和用户电话，用户名搜索某一用户
     * @param searchCode 搜所关键词
     * @param type 民族  1汉人 2藏
     * @param areaId
     * @author tsl
     * @date 2018/4/23 13:24
     */
    List<User> selectByCode(@Param("areaId") Integer areaId, @Param("searchCode") String searchCode,@Param("type")Integer type);
    /**
     * 根据区域id搜索所有正常用户
     * @author tsl
     * @date 2018/4/23 14:46
     * @param areaId
     *  @param type 民族  1汉人 2藏
     * @return
     */
    List<User> selectNormalUser(@Param("areaId") Integer areaId,@Param("type")Integer type);

    /**
     * 根据区域id搜索到期用户
     * @author tsl
     * @date 2018/4/23 14:46
     * @param type 民族  1汉人 2藏
     * @return
     */
    List<User> selectExpireUser(@Param("areaId") Integer areaId,@Param("type")Integer type);
    /**
     * 根据区域id搜索所有停用用户
     * @author tsl
     * @date 2018/4/23 14:46
     *  @param type 民族  1汉人 2藏
     * @return
     */
    List<User> selectDisableUser(@Param("areaId") Integer areaId,@Param("type")Integer type);

    /**
     * 获取最后一条
     * @author tsl
     * @date 2018/4/23 16:46
     * @param
     * @return
     */
    User selectLastOne();
    /**
     * 关联到所有题型，科目，车型上
     * @author tsl
     * @date 2018/4/23 16:46
     * @param id 用户id
     * @return
     */
    Integer relateLevel(@Param("id") Integer id,@Param("userles")List<UserLevel> userles);
    /**
     * 获取在线用户
     *
     * @author tsl
     * @date 2018/4/24 15:34
     * @return
     */
    List<User> selectOnlineUser();

    /**
     * 获取题目数量
     * @param
     * @return
     * @author tsl
     * @date 2018/4/24 16:20
     */
    Integer selectSubjectCount();
    /**
     * 获取用户数量
     * @param
     * @return
     * @author tsl
     * @date 2018/4/24 16:20
     */
    Integer selectCount();

    List<User> selectNormalNUser(@Param("type") Integer type);

    List<User> selectExpireNUser(@Param("type")Integer type);

    List<User> selectDisableNUser(@Param("type")Integer type);

    List<User> selectNByCode(@Param("searchCode")String searchCode,@Param("type") Integer type);
}